Skip to content
标签
工具
字数
757 字
阅读时间
4 分钟

一、概述

1.1 相关组件

  • ext 拓展配置,可在其中新增项目的扩展信息
  • buildscript 插件构建的相关配置
  • allprojects 多模块项目使用 所有项目的构建管理信息,一般在其中配置编码及项目名
  • subprojects 多模块项目使用 所有子模块的构建管理信息
  • repositories 仓库配置

二、相关配置

2.1 仓库配置

groovy
/*
* 指定所使用的仓库,mavenCentral()表示使用中央仓库,此刻项目中所需要的jar包都会默认从中央仓库下载到本地指定目录
*   mavenLocal()
*   mavenCentral()
*   以上配置表上先从本地仓库寻找依赖,如果没有再从中仓库下载。
*   mavenCentral()
*   如果只配置中央仓库,表示直接从中央仓库下载jar包。但是如果指定下载的位置已经有了,就不会再次下载了。
* */
repositories {
    mavenLocal()
    mavenCentral()
}

2.2 依赖管理

只有项目在引用java插件时,才可以在dependencies中引用依赖

groovy
apply plugin: 'java'
// 打成war包
apply plugin: 'war'
sourceCompatibility = 1.8

dependencies {
     compileOnly 'org.projectlombok:lombok:1.18.10'
     annotationProcessor 'org.projectlombok:lombok:1.18.10'
}

2.3 打包管理

当当前模块也引用了springboot的插件时,若想将当前模块作为普通依赖jar,需要将bootjar关闭

groovy
// 引用springboot插件
plugins {
    id 'org.springframework.boot'
}
jar.enabled=true
bootJar.enabled=false

2.4 lombok引用

lombok的引用需要同时加入注解处理器,或者在idea构建中将构建方式改为idea构建

groovy
compileOnly 'org.projectlombok:lombok:1.18.10'
annotationProcessor 'org.projectlombok:lombok:1.18.10'

2.5 普通jar包配置启动类

需要在配置中加入主类的配置

groovy
jar {
    manifest {
        attributes(
                'Main-Class': 'com.test.OperationMenu'
        )
    }
}

三、配置示例

grovvy
import org.apache.tools.ant.filters.ReplaceTokens

ext {
    //统一配置springcloud的版本号
    set('springCloudVersion', 'Greenwich.SR2')
    //产品代号
    productCode = 'micro-app'
    //项目代号 定制化
    projectCode = 'wxp'
    //SVN版本号
//    svnVerson = getVersion()
    //dev:研发环境,prod:正式环境,默认dev
    env = 'dev'
}

buildscript {
    repositories {
//        maven {
//            url "https://plugins.gradle.org/m2/"
//        }
        repositories {
            maven { url 'https://maven.aliyun.com/repository/public' }
            jcenter()
        }
    }
    dependencies {
        classpath "org.springframework.boot:spring-boot-gradle-plugin:2.1.3.RELEASE"
        classpath "io.spring.gradle:dependency-management-plugin:1.0.7.RELEASE"
//        classpath "gradle.plugin.org.liquibase:liquibase-gradle-plugin:2.0.1"
//        classpath 'se.transmode.gradle:gradle-docker:1.2'
    }
}

allprojects {

    group 'com.lly'
    version '1.0-SNAPSHOT'

    apply plugin: 'io.spring.dependency-management'
    //apply plugin: 'eclipse'
    //设置编码
    tasks.withType(JavaCompile) {
        options.encoding = "UTF-8"
    }
    //配置仓库
    repositories {
        maven { url 'https://maven.aliyun.com/repository/public' }
        maven { url 'https://repo.spring.io/milestone' }
        mavenCentral()
    }

    dependencies {
    }
    //控制子项目依赖的jar包的版本号
    dependencyManagement {
        imports {
            mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
        }


    }
}

subprojects {

    apply plugin: 'java'
    sourceCompatibility = 1.8

    dependencies {
        compileOnly 'org.projectlombok:lombok:1.18.10'
        annotationProcessor 'org.projectlombok:lombok:1.18.10'
    }

//    annotationProcessor('org.projectlombok:lombok')

//    def srcArray = ['src/main'];
//    String projectCode = project.hasProperty('projectCode') ? project.projectCode : null;
//    if(!projectCode?.isEmpty()){
//        if(file('src/' + projectCode).isDirectory()){
//            srcArray << 'src/' + projectCode;
//        }
//    }
//    println("==> $project.name source $srcArray")
//
//    sourceSets{
//        main{
//            java {
//                srcDirs = srcArray.collect{
//                    path -> path + '/java'
//                }
//            }
//            resources {
//                srcDirs = srcArray.collect{
//                    path -> path + '/resources'
//                }
//            }
//        }
//    }
//
//    def loadGroovyConfig = {
//        def configFile = file(projectDir.getAbsolutePath()+'\\config.groovy')
//        println(configFile.getAbsolutePath())
//        def env = project.hasProperty('env') ? project.env : 'dev'
//        println("==> $project.name load config with $env")
//        new ConfigSlurper(env).parse(configFile.toURL()).toProperties()
//    }
//
//    processResources {
//        filteringCharset = 'UTF-8'
//        from(sourceSets.main.resources.srcDirs) {
//            include '**/*.properties'
//            filter(ReplaceTokens, tokens: loadGroovyConfig())
//        }
//        outputs.upToDateWhen { false }
//    }

}